Please open Telegram to view this post
VIEW IN TELEGRAM
🧑💻 How to: как упаковать и опубликовать библиотеку с помощью GitHub Actions
Если вы пишете кроссплатформенные библиотеки на .NET MAUI и хотите настроить CI/CD без боли — это то, что вам нужно.
Microsoft в своём блоге дали подробный пошаговый пример, как всё это настроить.
Кратко, что вы получите:
✅ Cборка библиотеки и упаковка в NuGet-пакет
✅ Автоматическая генерация версий
✅ Публикация пакета на NuGet прямо из GitHub Actions
✅ Всё в одном YAML-файле
➡️ Оригинальный гайд
🐸 Библиотека шарписта #буст
Если вы пишете кроссплатформенные библиотеки на .NET MAUI и хотите настроить CI/CD без боли — это то, что вам нужно.
Microsoft в своём блоге дали подробный пошаговый пример, как всё это настроить.
Кратко, что вы получите:
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вы когда-либо пытались внедрить .NET Identity в реальном проекте, скорее всего, в какой-то момент хотели всё выбросить и переписать вручную. Ошибки, магия, дублирующиеся слои абстракций — создаётся ощущение, будто Microsoft намеренно сделала систему сложной. Но действительно ли всё так плохо?
⚠️ Боль разработчиков
• Создаётся впечатление, что каждая операция в Identity прячется в отдельном сервисе, интерфейсе, конструкторе, и всё это трудно дебажить или изменить без побочного эффекта.
• Хочется добавить поле «роль по умолчанию»? Придётся лезть в UserStore, ClaimsPrincipal, кастомизировать SignInManager, и всё это — чтобы в итоге наткнуться на какое-нибудь исключение в рантайме.
• Информации много, но она либо слишком базовая, либо устаревшая. Найти последовательный, жизненный путь от «у меня есть пользователь» до «работающая авторизация и кастомные роли» — задача не для слабонервных.
• Всё как будто работает «само», пока не надо изменить стандартный пайплайн. А как только вы влезаете внутрь — начинается танец с отладчиком.
💡 Почему всё-таки используют Identity
• Это из коробки. Не нужно писать свою систему безопасности (что, к слову, тоже не лучшая идея, если вы не эксперт в этой области).
• Она глубоко интегрирована с ASP.NET Core — пайплайны, мидлвары, авторизация через policy и claims.
• Есть возможность настроить под корпоративные сценарии: многофакторная авторизация, внешние логины, JWT, и всё это — пусть и криво, но реализуемо.
🔁 Есть ли альтернатива
• Сторонние провайдеры (Auth0, Azure AD B2C): проще, но вы зависите от внешнего сервиса.
• Собственные реализации: подойдёт, если требования простые, но нужна аккуратность в вопросах безопасности.
• Обёртки над Identity: некоторые компании и команды создают свои слои поверх Identity, скрывая его сложности и предоставляя более удобный API.
💬 Вы пробовали настраивать Identity с нуля? С какими проблемами столкнулись? Делитесь своим опытом и мнением в комментариях 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Набор разработчика без браузера
DevToys — это оффлайн десктопное приложение, объединяющее десятки полезных инструментов в одном месте.
➖ Что умеет
• Конвертировать JSON в YAML в XML и наоборот
• Хэшировать строки
• Декодировать/кодировать Base64, URL
• Форматировать SQL, CSS, JS
• Генерировать GUID, Lorem Ipsum
• Проверять регулярные выражения
Не веб-сервис, а локальный инструмент, который просто делает своё дело.
➡️ Попробовать DevToys
🐸 Библиотека шарписта #буст
DevToys — это оффлайн десктопное приложение, объединяющее десятки полезных инструментов в одном месте.
• Конвертировать JSON в YAML в XML и наоборот
• Хэшировать строки
• Декодировать/кодировать Base64, URL
• Форматировать SQL, CSS, JS
• Генерировать GUID, Lorem Ipsum
• Проверять регулярные выражения
Не веб-сервис, а локальный инструмент, который просто делает своё дело.
Please open Telegram to view this post
VIEW IN TELEGRAM
Ранее Redis перешёл на более ограничительные лицензии, такие как SSPL, чтобы защититься от использования их кода крупными облачными провайдерами без должной компенсации.
Цели были достигнуты — AWS и Google теперь поддерживают собственные форки Redis. Но лицензия SSPL не признана OSI как Open Source, что вызвало критику и отток пользователей.
С возвращением Сальваторе Санфилиппо, создателя Redis, в ноябре 2024 года, начались обсуждения о возвращении к более открытой модели лицензирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Самое интересное, что произошло за последние семь дней.
Благодаря возвращению основателя Сальваторе Санфилиппо, Redis вернулся к открытой лицензии.
Команда .NET успешно модернизировала систему сборки своего фреймворка, применив ИИ для автоматического преобразования около 300 проектов из кастомных файлов в MSBuild.
В релизе Wolverine 3.13 представлено множество улучшений, включая поддержку HTTP-форм с атрибутом [AsParameters], а также добавлены улучшения для работы с F#, Pulsar и Kafka.
Денежные призы самым смешным новостям
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека задач по C# | тесты, код, задания
Forwarded from Библиотека задач по C# | тесты, код, задания
Что выведет код?
Anonymous Quiz
12%
Исключение
40%
deadlock
43%
Слово "test"
5%
"test" бесконечное число раз
🔥 Конкурс: 30 000 ₽ за самую смешную IT-новость
Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.
📅 Сроки: прием новостей до 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Осталась неделя — ждем ваших новостей!
Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.
📅 Сроки: прием новостей до 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Осталась неделя — ждем ваших новостей!
Google Docs
Конкурс на самую смешную IT-новость
Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!
Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переворачиваете её с ног на голову, чтобы смеялись…
Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переворачиваете её с ног на голову, чтобы смеялись…
.NET Xamarin/MAUI Mobile Developer — Гибрид (Санкт-Петербург)
С#-разработчик — Гибрид (Москва)
C# Разработчик — Офис (Москва)
C# F# Developer Junior — от 80 000, Удалённо
Бустер — Удалённо (весь мир)
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 How to: как соблюдать принцип DRY
DRY (Don’t Repeat Yourself) — принцип, согласно которому каждый фрагмент знания должен существовать в системе только в одном месте. Никакого копипаста и дублирующей логики.
Проблема: дублирование валидации
При изменении правила — нужно помнить обновить его везде. Ловушка копипаста.
Решение: вынос логики в общее правило
Теперь в коде
Альтернатива: использование FluentValidation или DataAnnotations
Где чаще всего нарушают DRY в .NET:
• Повторяющиеся SQL-запросы и фильтры
• Повторение одинаковых exception'ов, логов, сообщений
• Дублирование конфигурации
• UI-формы и компоненты
🐸 Библиотека шарписта #буст
DRY (Don’t Repeat Yourself) — принцип, согласно которому каждый фрагмент знания должен существовать в системе только в одном месте. Никакого копипаста и дублирующей логики.
Проблема: дублирование валидации
// Пример плохого кода
if (user.Age < 18)
throw new Exception("User must be at least 18");
...
if (user.Age < 18)
return BadRequest("User must be at least 18");
При изменении правила — нужно помнить обновить его везде. Ловушка копипаста.
Решение: вынос логики в общее правило
public static class ValidationRules
{
public static bool IsAdult(User user) => user.Age >= 18;
}
Теперь в коде
if (!ValidationRules.IsAdult(user))
throw new Exception("User must be at least 18");
// И в другом месте:
if (!ValidationRules.IsAdult(user))
return BadRequest("User must be at least 18");
Альтернатива: использование FluentValidation или DataAnnotations
public class User
{
[Range(18, int.MaxValue, ErrorMessage = "User must be at least 18")]
public int Age { get; set; }
}
Где чаще всего нарушают DRY в .NET:
• Повторяющиеся SQL-запросы и фильтры
• Повторение одинаковых exception'ов, логов, сообщений
• Дублирование конфигурации
• UI-формы и компоненты
Please open Telegram to view this post
VIEW IN TELEGRAM
🧱 7 архитектурных паттернов, которые должен знать каждый программист
В быстро меняющемся мире разработки от программиста всё чаще требуется не просто писать код, а понимать, как правильно проектировать системы.
Архитектурные паттерны — это фундаментальные подходы, помогающие создавать масштабируемые, устойчивые и поддерживаемые решения.
В статье собрали и разобрали 7 архитектурных паттернов, которые сегодня стоит знать каждому разработчику — будь то разработка микросервисов, проектирование API или работа с распределёнными транзакциями.
➡️ Узнать паттерны
🐸 Библиотека шарписта #буст
В быстро меняющемся мире разработки от программиста всё чаще требуется не просто писать код, а понимать, как правильно проектировать системы.
Архитектурные паттерны — это фундаментальные подходы, помогающие создавать масштабируемые, устойчивые и поддерживаемые решения.
В статье собрали и разобрали 7 архитектурных паттернов, которые сегодня стоит знать каждому разработчику — будь то разработка микросервисов, проектирование API или работа с распределёнными транзакциями.
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Команда дня: сборка, которой не нужен .NET
Сегодня покажем команду, которая используется для публикации .NET-приложения, готового к развертыванию на целевой платформе (в данном случае — Linux x64):
Расшифровка параметров
•
Основная команда .NET CLI, предназначенная для компиляции приложения и подготовки всех необходимых файлов для его запуска.
•
Указывает конфигурацию сборки. В данном случае Release означает, что будет использована конфигурация для продакшн-сборки, в отличие от Debug, где остаются отладочные символы и меньше оптимизаций.
•
Указывает целевую платформу. Здесь linux-x64 означает, что публикуемое приложение будет запускаться на 64-битной Linux-системе.
•
Делает сборку самодостаточной: весь .NET Runtime и все зависимости включаются в сборку.
Это позволяет запускать приложение на машине без установленного .NET.
Это похоже на то, как если бы вы не просто упаковали ваш код, а положили его вместе с собственной версией операционной системы. Он будет работать «в вакууме», не завися от того, что есть на машине пользователя.
🐸 Библиотека шарписта #буст
Сегодня покажем команду, которая используется для публикации .NET-приложения, готового к развертыванию на целевой платформе (в данном случае — Linux x64):
dotnet publish -c Release -r linux-x64 --self-contained true
Расшифровка параметров
•
dotnet publish
Основная команда .NET CLI, предназначенная для компиляции приложения и подготовки всех необходимых файлов для его запуска.
•
-c Release
Указывает конфигурацию сборки. В данном случае Release означает, что будет использована конфигурация для продакшн-сборки, в отличие от Debug, где остаются отладочные символы и меньше оптимизаций.
•
-r linux-x64
Указывает целевую платформу. Здесь linux-x64 означает, что публикуемое приложение будет запускаться на 64-битной Linux-системе.
•
--self-contained true
Делает сборку самодостаточной: весь .NET Runtime и все зависимости включаются в сборку.
Это позволяет запускать приложение на машине без установленного .NET.
Это похоже на то, как если бы вы не просто упаковали ваш код, а положили его вместе с собственной версией операционной системы. Он будет работать «в вакууме», не завися от того, что есть на машине пользователя.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM